package basic7;

public class J14_StaticMember {

	public static void main(String[] args) {

		// static 멤버변수 다루기
		Car car1 = new Car("KiA", "SOUL", 4, 16785);
		//car1객체가 생성되면 정적 변수 total에 1을 추가한다.
		Car car2 = new Car("폭바", "GOLF", 2, 97467);
		//car2객체가 생성되면 정적 변수 total에 1을 추가한다.
		
		System.out.println(car1.getCounter());
		System.out.println(car2.getCounter());
		System.out.println(Car.total);
		
		//total을 공유하여 

		
	}// 메인

}// 클래스

// 차량정보를 다루는 클래스 : Car
// 제조사 : maker
// 모델명 : model
// 문짝수 : doors
// 차량번호 : counter

class Car {
	
	//1.멤버변수 선언

	private String Maker;
	private String Model;
	private int Doors;
	private int Counter;
	//위의 멤버변수들은 new연산자로 객체를 생성할 때 변수가 만들어 진다.
	static int total; //정적멤버변수
	//하지만 정적변수는 프로그램이 실행될 때 미리 변수가 만들어진다.

	//4.toString 메서드 재정의
	public String toString() {
		String carInfo = "제조사 :" + Maker;
		carInfo +="모델명 : "+Model;
		carInfo +="문 개수 : " + Doors;
		carInfo +="차량번호 : "+Counter;
		return carInfo;
	}

	//2.생성자 정의
	public Car() {
	}
	
//모든 멤버변수를 초기화하는 생성자 정의
	public Car(String Maker, String Model, int Doors, int Counter) {
		
	
			this.Maker = Maker;
		this.Model = Model;
		this.Doors = Doors;
		this.Counter = Counter;
		
	
		
	}
	
	//일부 멤버변수를 초기화하는 생성자 정의
	public Car(String Maker, String Model) {
		//문짝이 4개이고 카운터가 0인 차량등록시 사용
		this(Maker, Model, 4, 0);
	/*	this.Maker = Maker;
		this.Model = Model;*/
		++total; //정적멤버변수 증가 car 객체가 생성될 때마다 증가
	}
	
	//3.setter/getter선언
	public String getMaker() {
		return Maker;
	}

	public void setMaker(String maker) {
		Maker = maker;
	}

	public String getModel() {
		return Model;
	}

	public void setModel(String model) {
		Model = model;
	}

	public int getDoors() {
		return Doors;
	}

	public void setDoors(int doors) {
		Doors = doors;
	}

	public int getCounter() {
		return Counter;
	}

	public void setCounter(int counter) {
		Counter = counter;
	}

	

	
	
}
